package com.qingcheng.controller;

import com.alibaba.dubbo.config.annotation.Reference;
import com.qingcheng.entity.Result;
import com.qingcheng.pojo.user.User;
import com.qingcheng.service.user.UserService;
import com.qingcheng.util.BCrypt;
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.*;

@RestController
@RequestMapping("/user")
public class UserController {

    @Reference
    private UserService userService;

    /**
     * 发送短信验证码
     *
     * @param phone 手机号
     * @return
     */
    @GetMapping("/sendSms")
    public Result sendSms(String phone) {
        userService.sendSms(phone);
        return new Result();
    }

    @PostMapping("/save")
    public Result save(@RequestBody User user, String smsCode) {
        //post请求，如果是接收json格式（要求传输参数是json(application/json;charset=utf-8)，
        // 接收参数要是一个参数或者是一个对象并且参数前加上@RequestBody注解）；
        // 如果是表单提交(application/x-www-form-urlencoded)，
        // 接收参数没有要求即可以是对象也可以是多个参数的接收方式
        //因为user 是json格式对象所以要用@RequetBody转换

        //密码加密
        BCryptPasswordEncoder encoder = new BCryptPasswordEncoder();
        String newpassword = encoder.encode(user.getPassword());
        user.setPassword(newpassword);
        userService.add(user, smsCode);
        return new Result();
    }
}
